﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using AdministracionCondominios.Persistencia;
using AdministracionCondominios.Dominio;

namespace AdministracionCondominios.Prueba
{
    [TestFixture]
    public class TestDAOResidente
    {
        //Instancia el objeto DAO a probar
        private DAOResidente daoResidente = new DAOResidente();

        [Test]
        public void TestCrear()
        {
            // 1. Instancia el objeto a probar
            Residente pruebaResidente = new Residente();

            // 2. Instanciando el objeto TO
            pruebaResidente.DNI = "40717622";
            pruebaResidente.Nombres = "Elía";
            pruebaResidente.Apellidos = "Torres";
            pruebaResidente.Edad = 31;
            pruebaResidente.Correo = "peru@upc.edu.pe";
            pruebaResidente.Clave = "12345";

            Residente residenteObtener = daoResidente.ObtenerCorreo(pruebaResidente.DNI, pruebaResidente.Correo);

            Assert.AreNotEqual(pruebaResidente.Correo, residenteObtener.Correo,"Son Iguales");

            // 3. Llamada al método del DAO a probar
            Residente residenteCreado = daoResidente.Crear(pruebaResidente);

            // 4. Implementar las validaciones
            Assert.NotNull(residenteCreado);
            Assert.AreEqual(pruebaResidente.DNI, residenteCreado.DNI);
            Assert.AreEqual(pruebaResidente.Correo, residenteCreado.Correo);


            //Residente crearResidente = new Residente();
            //crearResidente.DNI = "40717623";
            //crearResidente.Nombres = "Elía";
            //crearResidente.Apellidos = "Torres";
            //crearResidente.Edad = 31;
            //crearResidente.Correo = "peru@upc.edu.pe";
            //crearResidente.Clave = "12345";
            //Residente creadoResidente = null;
            //Assert.DoesNotThrow(delegate
            //{
            //    creadoResidente = daoResidente.Crear(crearResidente);
            //});
            //Assert.AreEqual(crearResidente.DNI, creadoResidente.DNI);
            //Assert.AreEqual(crearResidente.Correo, creadoResidente.Correo, "Son Iguales");
        }

        [Test]
        public void TestObtener()
        {
            // 1. Instancia el objeto a probar
            Residente pruebaResidente = new Residente();

            // 2. Instanciamos el objeto TO
            pruebaResidente.DNI = "40717626";

            // 3. Llamada al método del DAO a probar
            Residente residenteObtenido = daoResidente.Obtener(pruebaResidente.DNI);

            // 4. Implementar las validaciones
            Assert.NotNull(residenteObtenido);
            Assert.AreEqual(pruebaResidente.DNI, residenteObtenido.DNI);
            Assert.NotNull(residenteObtenido.Nombres);
        }

        [Test]
        public void TestModificar()
        {
            // 1. Instancia el objeto a probar
            Residente pruebaResidente = new Residente();

            // 2. Instanciamos el objeto TO
            pruebaResidente.DNI = "40717586";
            pruebaResidente.Correo = "inognisensoper@hotmail.com";

            // 3. Llamada al método del DAO a probar
            Residente residenteModificado = daoResidente.Modificar(pruebaResidente);

            // 4. Implementar las validaciones
            Assert.NotNull(residenteModificado);
            Assert.AreEqual(pruebaResidente.Correo, residenteModificado.Correo);
        }

        [Test]
        public void TestEliminar()
        {
            // 1. Instancia el objeto a probar
            Residente pruebaResidente = new Residente();

            // 2. Instanciamos el objeto TO
            pruebaResidente.DNI = "40717626";
            // 3. Llamada al método del DAO a probar
            Assert.DoesNotThrow(delegate
            {
                daoResidente.Eliminar(pruebaResidente);
            });

            // 4. Implementar las validaciones
            Assert.NotNull(pruebaResidente);
            Assert.NotNull(pruebaResidente.DNI);
        }

        [Test]
        public void TestListar()
        {

        }
    }
}